winapi\shared/
wtypesbase.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6use ctypes::{c_double, c_short, c_uchar, c_ushort};
7use shared::minwindef::{BYTE, DWORD};
8use shared::rpcndr::{boolean, byte, hyper};
9use um::winnt::{LONG, LPWSTR, WCHAR};
10pub type OLECHAR = WCHAR;
11pub type LPOLESTR = *mut OLECHAR;
12pub type LPCOLESTR = *const OLECHAR;
13pub type UCHAR = c_uchar;
14pub type SHORT = c_short;
15pub type USHORT = c_ushort;
16pub type ULONG = DWORD;
17pub type DOUBLE = c_double;
18STRUCT!{struct COAUTHIDENTITY {
19    User: *mut USHORT,
20    UserLength: ULONG,
21    Domain: *mut USHORT,
22    DomainLength: ULONG,
23    Password: *mut USHORT,
24    PasswordLength: ULONG,
25    Flags: ULONG,
26}}
27STRUCT!{struct COAUTHINFO {
28    dwAuthnSvc: DWORD,
29    dwAuthzSvc: DWORD,
30    pwszServerPrincName: LPWSTR,
31    dwAuthnLevel: DWORD,
32    dwImpersonationLevel: DWORD,
33    pAuthIdentityData: *mut COAUTHIDENTITY,
34    dwCapabilities: DWORD,
35}}
36pub type SCODE = LONG;
37pub type PSCODE = *mut SCODE;
38ENUM!{enum MEMCTX {
39    MEMCTX_TASK = 1,
40    MEMCTX_SHARED = 2,
41    MEMCTX_MACSYSTEM = 3,
42    MEMCTX_UNKNOWN = -1i32 as u32,
43    MEMCTX_SAME = -2i32 as u32,
44}}
45pub const ROTREGFLAGS_ALLOWANYCLIENT: DWORD = 0x1;
46pub const APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP: DWORD = 0x1;
47pub const APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND: DWORD = 0x2;
48pub const APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY: DWORD = 0x4;
49pub const APPIDREGFLAGS_IUSERVER_UNMODIFIED_LOGON_TOKEN: DWORD = 0x8;
50pub const APPIDREGFLAGS_IUSERVER_SELF_SID_IN_LAUNCH_PERMISSION: DWORD = 0x10;
51pub const APPIDREGFLAGS_IUSERVER_ACTIVATE_IN_CLIENT_SESSION_ONLY: DWORD = 0x20;
52pub const APPIDREGFLAGS_RESERVED1: DWORD = 0x40;
53pub const APPIDREGFLAGS_RESERVED2: DWORD = 0x80;
54pub const APPIDREGFLAGS_RESERVED3: DWORD = 0x100;
55pub const APPIDREGFLAGS_RESERVED4: DWORD = 0x200;
56pub const APPIDREGFLAGS_RESERVED5: DWORD = 0x400;
57pub const APPIDREGFLAGS_RESERVED6: DWORD = 0x800;
58pub const DCOMSCM_ACTIVATION_USE_ALL_AUTHNSERVICES: DWORD = 0x1;
59pub const DCOMSCM_ACTIVATION_DISALLOW_UNSECURE_CALL: DWORD = 0x2;
60pub const DCOMSCM_RESOLVE_USE_ALL_AUTHNSERVICES: DWORD = 0x4;
61pub const DCOMSCM_RESOLVE_DISALLOW_UNSECURE_CALL: DWORD = 0x8;
62pub const DCOMSCM_PING_USE_MID_AUTHNSERVICE: DWORD = 0x10;
63pub const DCOMSCM_PING_DISALLOW_UNSECURE_CALL: DWORD = 0x20;
64ENUM!{enum CLSCTX {
65    CLSCTX_INPROC_SERVER = 0x1,
66    CLSCTX_INPROC_HANDLER = 0x2,
67    CLSCTX_LOCAL_SERVER = 0x4,
68    CLSCTX_INPROC_SERVER16 = 0x8,
69    CLSCTX_REMOTE_SERVER = 0x10,
70    CLSCTX_INPROC_HANDLER16 = 0x20,
71    CLSCTX_RESERVED1 = 0x40,
72    CLSCTX_RESERVED2 = 0x80,
73    CLSCTX_RESERVED3 = 0x100,
74    CLSCTX_RESERVED4 = 0x200,
75    CLSCTX_NO_CODE_DOWNLOAD = 0x400,
76    CLSCTX_RESERVED5 = 0x800,
77    CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
78    CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
79    CLSCTX_NO_FAILURE_LOG = 0x4000,
80    CLSCTX_DISABLE_AAA = 0x8000,
81    CLSCTX_ENABLE_AAA = 0x10000,
82    CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000,
83    CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000,
84    CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000,
85    CLSCTX_ENABLE_CLOAKING = 0x100000,
86    CLSCTX_APPCONTAINER = 0x400000,
87    CLSCTX_ACTIVATE_AAA_AS_IU = 0x800000,
88    CLSCTX_PS_DLL = 0x80000000,
89}}
90pub const CLSCTX_VALID_MASK: CLSCTX = CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER
91    | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_SERVER16 | CLSCTX_REMOTE_SERVER
92    | CLSCTX_NO_CODE_DOWNLOAD | CLSCTX_NO_CUSTOM_MARSHAL | CLSCTX_ENABLE_CODE_DOWNLOAD
93    | CLSCTX_NO_FAILURE_LOG | CLSCTX_DISABLE_AAA | CLSCTX_ENABLE_AAA | CLSCTX_FROM_DEFAULT_CONTEXT
94    | CLSCTX_ACTIVATE_32_BIT_SERVER | CLSCTX_ACTIVATE_64_BIT_SERVER | CLSCTX_ENABLE_CLOAKING
95    | CLSCTX_APPCONTAINER | CLSCTX_ACTIVATE_AAA_AS_IU | CLSCTX_PS_DLL;
96ENUM!{enum MSHLFLAGS {
97    MSHLFLAGS_NORMAL = 0,
98    MSHLFLAGS_TABLESTRONG = 1,
99    MSHLFLAGS_TABLEWEAK = 2,
100    MSHLFLAGS_NOPING = 4,
101    MSHLFLAGS_RESERVED1 = 8,
102    MSHLFLAGS_RESERVED2 = 16,
103    MSHLFLAGS_RESERVED3 = 32,
104    MSHLFLAGS_RESERVED4 = 64,
105}}
106ENUM!{enum MSHCTX {
107    MSHCTX_LOCAL = 0,
108    MSHCTX_NOSHAREDMEM = 1,
109    MSHCTX_DIFFERENTMACHINE = 2,
110    MSHCTX_INPROC = 3,
111    MSHCTX_CROSSCTX = 4,
112}}
113STRUCT!{struct BYTE_BLOB {
114    clSize: ULONG,
115    abData: [byte; 1],
116}}
117pub type UP_BYTE_BLOB = *mut BYTE_BLOB;
118STRUCT!{struct WORD_BLOB {
119    clSize: ULONG,
120    asData: [c_ushort; 1],
121}}
122pub type UP_WORD_BLOB = *mut WORD_BLOB;
123STRUCT!{struct DWORD_BLOB {
124    clSize: ULONG,
125    alData: [ULONG; 1],
126}}
127pub type UP_DWORD_BLOB = *mut DWORD_BLOB;
128STRUCT!{struct FLAGGED_BYTE_BLOB {
129    fFlags: ULONG,
130    clSize: ULONG,
131    abData: [byte; 1],
132}}
133pub type UP_FLAGGED_BYTE_BLOB = *mut FLAGGED_BYTE_BLOB;
134STRUCT!{struct FLAGGED_WORD_BLOB {
135    fFlags: ULONG,
136    clSize: ULONG,
137    alData: [ULONG; 1],
138}}
139pub type UP_FLAGGED_WORD_BLOB = *mut FLAGGED_WORD_BLOB;
140STRUCT!{struct BYTE_SIZEDARR {
141    clSize: ULONG,
142    pData: *mut byte,
143}}
144STRUCT!{struct WORD_SIZEDARR {
145    clSize: ULONG,
146    pData: *mut c_ushort,
147}}
148STRUCT!{struct DWORD_SIZEDARR {
149    clSize: ULONG,
150    pData: *mut ULONG,
151}}
152STRUCT!{struct HYPER_SIZEDARR {
153    clSize: ULONG,
154    pData: *mut hyper,
155}}
156pub type BOOLEAN = boolean;
157STRUCT!{struct BLOB {
158    cbSize: ULONG,
159    pBlobData: *mut BYTE,
160}}
161pub type LPBLOB = *mut BLOB;